/*
配置参考
#全局 CLI 配置
有些针对 @vue/cli 的全局配置，例如你惯用的包管理器和你本
地保存的 preset，都保存在 home 目录下一个名叫 .vuerc 的 
JSON 文件。你可以用编辑器直接编辑这个文件来更改已保存的选项。
你也可以使用 vue config 命令来审查或修改全局的 CLI 配置。
vue.config.js 是一个可选的配置文件，如果项目的 (和 package.json 同级的) 
根目录中存在这个文件，那么它会被 @vue/cli-service 自动加载。
你也可以使用 package.json 中的 vue 字段，但是注意这种写法需要你严格
遵照 JSON 的格式来写。所已不推荐。
*/
module.exports = {
	/*
	 type:string
	 default:'/'
	 部署应用包时的基本 URL。用法和 webpack 本身的 output.publicPath 一致，
	 但是 Vue CLI 在一些其他地方也需要用到这个值，所以请始终使用 publicPath 
	 而不要直接修改 webpack 的 output.publicPath。
	 默认情况下，Vue CLI 会假设你的应用是被部署在一个域名的根路径上，
	 例如 https://www.my-app.com/。如果应用被部署在一个子路径上，你
	 就需要用这个选项指定这个子路径。例如，如果你的应用被部署在
	 https://www.my-app.com/my-app/，则设置 publicPath 为 /my-app/。
	 这个值也可以被设置为空字符串 ('') 或是相对路径 ('./')，这样所有的资源都会
	 被链接为相对路径，这样打出来的包可以被部署在任意路径，也可以用在类
	 似 Cordova hybrid 应用的文件系统中。
	 相对 publicPath 的限制
	 相对路径的 publicPath 有一些使用上的限制。在以下情况下，应当避免使用相对 publicPath:
	 当使用基于 HTML5 history.pushState 的路由时；
	 当使用 pages 选项构建多页面应用时。
	 * */
	//这个值在开发环境下同样生效。如果你想把开发服务器架
	//设在根路径，你可以使用一个条件式的值
	publicPath: process.env.NODE_ENV === 'production'? '/prod/': '/',
	
	
	/*
	 type:string
	 default:'dist'
	 当运行 vue-cli-service build 时生成的生产环境构建文件的目录。
	 注意目标目录在构建之前会被清除 (构建时传入 --no-clean 可关闭该行为)
	 请始终使用 outputDir 而不要修改 webpack 的 output.path。
	 * */
	outputDir:'dist',
	
	
	/*
	 type:string
	 default:'dist'
	 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录。
	 从生成的资源覆写 filename 或 chunkFilename 时，assetsDir 会被忽略。
	 * */
	assetsDir:'dist',
	
	
	
	/*
	Type: string
	Default: 'index.html'
	指定生成的 index.html 的输出路径 (相对于 outputDir)。也可以是一个绝对路径
	 * */
	indexPath:'index.html',
	
	
	
	/*
	Type: string
	Default: true
	默认情况下，生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存
	。然而，这也要求 index 的 HTML 是被 Vue CLI 自动生成的。如果你无法使用
	Vue CLI 生成的 index HTML，你可以通过将这个选项设为 false 来关闭文件名哈希。
	 * */
	filenameHashing:true,
	
	
	
	
	/*
	Type: Object
	Default: undefined
	在 multi-page 模式下构建应用。每个“page”应该有一个对应的 JavaScript 入口文件。
	其值应该是一个对象，对象的 key 是入口的名字，value 是：
	一个指定了 entry, template, filename, title 和 chunks 的
	对象 (除了 entry 之外都是可选的)；或一个指定其 entry 的字符串。
	注意
	当在 multi-page 模式下构建时，webpack 配置会包含不一样的插
	件 (这时会存在多个 html-webpack-plugin 和 preload-webpack-plugin 的实例)。
	如果你试图修改这些插件的选项，请确认运行 vue inspect。
	 * */
	pages: {
	    index: {
	      // page 的入口
	      entry: 'src/index/main.js',
	      // 模板来源
	      template: 'public/index.html',
	      // 在 dist/index.html 的输出
	      filename: 'index.html',
	      // 当使用 title 选项时，
	      // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
	      title: 'Index Page',
	      // 在这个页面中包含的块，默认情况下会包含
	      // 提取出来的通用 chunk 和 vendor chunk。
	      chunks: ['chunk-vendors', 'chunk-common', 'index']
	    },
	    // 当使用只有入口的字符串格式时，
	    // 模板会被推导为 `public/subpage.html`
	    // 并且如果找不到的话，就回退到 `public/index.html`。
	    // 输出文件名会被推导为 `subpage.html`。
	    subpage: 'src/subpage/main.js'
  	},
  
  
  
  	
  	
  	/*
  	Type: boolean | 'warning' | 'default' | 'error'
	Default: 'default'
	是否在开发环境下通过 eslint-loader 在每次保存时 lint 代码。
	这个值会在 @vue/cli-plugin-eslint 被安装之后生效。
	设置为 true 或 'warning' 时，eslint-loader 会将 lint 错误输出
	为编译警告。默认情况下，警告仅仅会被输出到命令行，且不会使得编译失败。
	如果你希望让 lint 错误在开发时直接显示在浏览器中，你可以使
	用 lintOnSave: 'default'。这会强制 eslint-loader 将 lint 
	错误输出为编译错误，同时也意味着 lint 错误将会导致编译失败。
	设置为 error 将会使得 eslint-loader 把 lint 警告也输出为编译错误，
	这意味着 lint 警告将会导致编译失败。
	或者，你也可以通过设置让浏览器 overlay 同时显示警告和错误：
	当 lintOnSave 是一个 truthy 的值时，eslint-loader 在
	开发和生产构建下都会被启用。如果你想要在生产构建时禁
	用 eslint-loader，你可以用如下配置：
  	 * */
  	lintOnSave: process.env.NODE_ENV !== 'production',

  	
  	
  	
  	
  	/*
  	Type: boolean
	Default: false
	是否使用包含运行时编译器的 Vue 构建版本。设置为 true 后你就可以在 Vue 
	组件中使用 template 选项了，但是这会让你的应用额外增加 10kb 左右。
  	 * */
  	runtimeCompiler:false,
  	
  	
  	
  	
  	
  	/*
  	Type: Array<string | RegExp>
	Default: []
	默认情况下 babel-loader 会忽略所有 node_modules 中的文件。
	如果你想要通过 Babel 显式转译一个依赖，可以在这个选项中列出来。
  	 * */
  	transpileDependencies:[],
  	
  	
  	
  	
  	
  	/*
  	Type: boolean
	Default: true
	如果你不需要生产环境的 source map，可以将其设置为 false 以加速生产环境构建
	map文件的作用在于：项目打包后，代码都是经过压缩加密的，如果运行时报错，
	输出的错误信息无法准确得知是哪里的代码报错。也就是说map文件相当于是查看源码的
	一个东西。如果不需要定位问题，并且不想被看到源码，就把productionSourceMap 
	置为false，既可以减少包大小，也可以加密源码
  	 * */
  	productionSourceMap:false,
  	
  	
  	
  	
  	/*
  	Type: string
	Default: undefined
	设置生成的 HTML 中 <link rel="stylesheet"> 和 <script> 标签的 crossorigin(跨域资源) 属性。
	需要注意的是该选项仅影响由 html-webpack-plugin 在构建时注入的标
	签 - 直接写在模版 (public/index.html) 中的标签不受影响。
  	 * */
  	crossorigin:undefined,
  	
  	
  
  
  	
  	/*
  	Type: boolean
	Default: false
	在生成的 HTML 中的 <link rel="stylesheet"> 和 <script> 标签上启
	用 Subresource Integrity (SRI)。如果你构建后的文件是部署在 CDN 上的，
	启用该选项可以提供额外的安全性。
	需要注意的是该选项仅影响由 html-webpack-plugin 在构建时注入的标签 - 
	直接写在模版 (public/index.html) 中的标签不受影响。
	另外，当启用 SRI 时，preload resource hints 会被禁用，
	因为 Chrome 的一个 bug 会导致文件被下载两次。
  	 * */
  	integrity:false
  
  
  
  
  
  
  	/*
  	Type: Object | Function
	如果这个值是一个对象，则会通过 webpack-merge 合并到最终的配置中。
	如果这个值是一个函数，则会接收被解析的配置作为参数。该函数既可以
	修改配置并不返回任何东西，也可以返回一个被克隆或合并过的配置版本。
  	 * */
  	configureWebpack: config => {
	    if (process.env.NODE_ENV === 'production') {
	      // 为生产环境修改配置...
	    } else {
	      // 为开发环境修改配置...
	    }
	}
  
  
  
  
  	
  	/*
  	Type: Function
	是一个函数，会接收一个基于 webpack-chain 的 ChainableConfig 实例。
	允许对内部的 webpack 配置进行更细粒度的修改。
  	 * */
	//添加一个新的 Loader
	chainWebpack: config => {
	    // GraphQL Loader
	    config.module
	      .rule('graphql')
	      .test(/\.graphql$/)
	      .use('graphql-tag/loader')
	        .loader('graphql-tag/loader')
	        .end()
	      // 你还可以再添加一个 loader
	      .use('other-loader')
	        .loader('other-loader')
	        .end()
	}
	  
  
	
	
	
	css:{
		/*
		Type: boolean
		Default: true
		默认情况下，只有 *.module.[ext] 结尾的文件才会被视作 CSS Modules 
		模块。设置为 false 后你就可以去掉文件名中的 .module 并将所有
		的 *.(css|scss|sass|less|styl(us)?) 文件视为 CSS Modules 模块。
		如果你在 css.loaderOptions.css 里配置了自定义的 CSS Module 选项，
		则 css.requireModuleExtension 必须被显式地指定为 true 或者 false，
		否则我们无法确定你是否希望将这些自定义配置应用到所有 CSS 文件中
		 * */
		requireModuleExtension:true,
		
		
		/*
	 	Type: boolean
		Default: false
		是否为 CSS 开启 source map。设置为 true 之后可能会影响构建的性能
		 * */
		sourceMap:false,
		
		/*
		Type: boolean | Object
		Default: 生产环境下是 true，开发环境下是 false
		是否将组件中的 CSS 提取至一个独立的 CSS 文件中
		(而不是动态注入到 JavaScript 中的 inline 代码)。
		同样当构建 Web Components 组件时它总是会被禁
		用 (样式是 inline 的并注入到了 shadowRoot 中)。
		当作为一个库构建时，你也可以将其设置为 false 免得用户自己导入 CSS。
		提取 CSS 在开发环境模式下是默认不开启的，因为它和 CSS 热重载不兼容。然而，
		你仍然可以将这个值显性地设置为 true 在所有情况下都强制提取。
		 * */
		extract:process.env.NODE_ENV === 'production'?true:false,
		
		
		/*
		Type: Object
		Default: {}
		向 CSS 相关的 loader 传递选项。例如：
		 * */
		loaderOptions:{
			css: {
		        // 这里的选项会传递给 css-loader
		    },
		    postcss: {
		        // 这里的选项会传递给 postcss-loader
		    },
		    // 给 sass-loader 传递选项
		    sass: {
		        // @/ 是 src/ 的别名
		        // 所以这里假设你有 `src/variables.sass` 这个文件
		        // 注意：在 sass-loader v8 中，这个选项名是 "prependData"
		        additionalData: `@import "~@/variables.sass"` //注入全局变量文件
		    },
		      // 默认情况下 `sass` 选项会同时对 `sass` 和 `scss` 语法同时生效
		      // 因为 `scss` 语法在内部也是由 sass-loader 处理的
		      // 但是在配置 `prependData` 选项的时候
		      // `scss` 语法会要求语句结尾必须有分号，`sass` 则要求必须没有分号
		      // 在这种情况下，我们可以使用 `scss` 选项，对 `scss` 语法进行单独配置
		    scss: {
		        additionalData: `@import "~@/variables.scss";`//注入全局变量文件
		    },
		}
	}
	
	
	
	/*
	Type: Object
	所有 webpack-dev-server 的选项都支持。注意：
	有些值像 host、port 和 https 可能会被命令行参数覆写。
	有些值像 publicPath 和 historyApiFallback 不应该被修改，
	因为它们需要和开发服务器的 publicPath 同步以保障正常的工作。
	 * */
	devServer:{
		port: 9527,
    	open: true,
    	https: false,
    	hotOnly: false,
    	host:'localhost',
    	proxy:{
    		'/api':{
		        target: '10.86.120.128/web/auth/',
		        ws: true,//是否开启websokets
		        changeOrigin: true,//是否跨域
		        pathRewrite: {
                	'^/api': '/' //路径替换
           		}
		    },
    	}
	}
	
	
	
	/*
	Type: boolean
	Default: require('os').cpus().length > 1
	是否为 Babel 或 TypeScript 使用 thread-loader。
	该选项在系统的 CPU 有多于一个内核时自动启用，仅作用于生产构建
	 * */
	parallel:require('os').cpus().length > 1
	
	
	
	/*
 	Type: Object
	向 PWA 插件传递选项。
	 * */
	pwa:{}
	
	
	/*
	Type: Object
	这是一个不进行任何 schema 验证的对象，因此它可
	以用来传递任何第三方插件选项。例如：
	 * */
	pluginOptions:{
		foo: {
	      // 插件可以作为 `options.pluginOptions.foo` 访问这些选项。
	    }
	}
}




















